[IA64] per cpu vhpt stats
authorawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 21 Jun 2006 17:17:08 +0000 (11:17 -0600)
committerawilliam@xenbuild.aw <awilliam@xenbuild.aw>
Wed, 21 Jun 2006 17:17:08 +0000 (11:17 -0600)
dump_vhpt_stats: disp usage per cpu.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
xen/arch/ia64/xen/vhpt.c

index 0a653d173aaf3f198875058e69f98a6670d2b830..3fe48facf7de0fcd1c71a3a8b20318fc023f2647 100644 (file)
@@ -266,16 +266,21 @@ void zero_vhpt_stats(void)
 
 int dump_vhpt_stats(char *buf)
 {
-       int i;
+       int i, cpu;
        char *s = buf;
-       struct vhpt_lf_entry *v = (void *)VHPT_ADDR;
-       unsigned long vhpt_valid = 0, vhpt_chains = 0;
 
-       for (i = 0; i < VHPT_NUM_ENTRIES; i++, v++) {
-               if (!(v->ti_tag & INVALID_TI_TAG)) vhpt_valid++;
-               if (v->CChain) vhpt_chains++;
+       s += sprintf(s,"VHPT usage (%ld entries):\n",
+                    (unsigned long) VHPT_NUM_ENTRIES);
+
+       for_each_present_cpu (cpu) {
+               struct vhpt_lf_entry *v = __va(per_cpu(vhpt_paddr, cpu));
+               unsigned long vhpt_valid = 0;
+
+               for (i = 0; i < VHPT_NUM_ENTRIES; i++, v++)
+                       if (!(v->ti_tag & INVALID_TI_TAG))
+                               vhpt_valid++;
+               s += sprintf(s,"  cpu %d: %ld\n", cpu, vhpt_valid);
        }
-       s += sprintf(s,"VHPT usage: %ld/%ld (%ld collision chains)\n",
-               vhpt_valid, (unsigned long) VHPT_NUM_ENTRIES, vhpt_chains);
+
        return s - buf;
 }